package ui;

import engine.Corpus;
import engine.Request;
import engine.ResultEntry;
import engine.SearchEngine;
import engine.SimilarityCalculator;
import engine.SimilarityCalculator.SimilarityModel;
import engine.TableResults;
import engine.WeightsCalculator;
import java.awt.Desktop;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.concurrent.ExecutionException;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;

public class UserInterface extends javax.swing.JFrame {

    private SearchEngine engine;
    private TableResults modeleTableResults;

    public UserInterface() {
        initComponents();
        buttonGroupModele.add(rbVectoriel);
        buttonGroupModele.add(rbBoolSimple);
        buttonGroupModele.add(rbBoolEtendu);

        modeleTableResults = new TableResults();
        jTableResults.setModel(modeleTableResults);
        jTableResults.getColumnModel().getColumn(0).setMinWidth(150);
        jTableResults.getColumnModel().getColumn(0).setMaxWidth(150);
        jTableResults.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) {
                    int clickedRow = ((JTable) e.getSource()).getSelectedRow();
                    ResultEntry clickedEntry = modeleTableResults.getResultAt(clickedRow);
                    //System.out.println(clickedEntry);

                    try {
                        //Overture du fichier au double click
                        Desktop.getDesktop().open(new File(clickedEntry.getFilePath().replace("lemmes_seulement", "html").replace("-lemmas.txt", ".html")));
                    } catch (Exception ex) {
                        System.out.println("Ouverture de fichier impossible sur cette plateforme (" + System.getProperty("os.name") + ")" + ex.toString());
                    }
                }
            }

            @Override
            public void mousePressed(MouseEvent e) {
            }

            @Override
            public void mouseReleased(MouseEvent e) {
            }

            @Override
            public void mouseEntered(MouseEvent e) {
            }

            @Override
            public void mouseExited(MouseEvent e) {
            }
        });
        //modeleTableResults.addRow(new ResultEntry("aa", 10.2, "aaa"));//test
    }

    private void buttonSearch() {
        //Clean recherche précédente
        modeleTableResults.clear();
        jTableResults.removeAll();
        updateNbMots(-1, -1);
        updateProgressBarReadFiles(0);
        updateProgressBarReadWeights(0);
        updateProgressBarSimilarity(0);

        //Création du SearchEngine à partir du chemin du corpus
        String corpusPath = txtCorpusPath.getText();
        this.engine = new SearchEngine(corpusPath);

        Corpus trainCorpus = this.engine.getTrainCorpus();
        trainCorpus.setGuiToUpdate(this);

        trainCorpus.execute();
        //Appel tfAndDfAreFilled quand termine
    }

    public void tfAndDfAreFilled() {
        System.out.println("tfAndDfAreFilled.");

        Corpus trainCorpus = this.engine.getTrainCorpus();

        //Remplissage des poids
        WeightsCalculator wc = new WeightsCalculator(trainCorpus, trainCorpus.getDocs());
        this.engine.setWeightsCalculator(wc);
        wc.setGuiToUpdate(this);
        wc.execute();
    }

    public void weightsAreFilled() {
        Corpus trainCorpus = this.engine.getTrainCorpus();

        //Parsing de la requete (rapide)
        Request r = new Request(txtRequest.getText());
        r.fillTfMap();
        r.fillWeights(trainCorpus);
        //System.out.println(r.toString());

        //Calcul de similarité
        SimilarityModel modele;
        if (rbVectoriel.isSelected()) {
            modele = SimilarityCalculator.SimilarityModel.VECTORIEL;
        } else if (rbBoolSimple.isSelected()) {
            modele = SimilarityCalculator.SimilarityModel.BOOL_SIMPLE;
        } else if (rbBoolEtendu.isSelected()) {
            modele = SimilarityCalculator.SimilarityModel.BOOL_ETENDU;
        } else {
            modele = SimilarityCalculator.SimilarityModel.VECTORIEL;
        }

        SimilarityCalculator similarityCalc = new SimilarityCalculator(modele, r, trainCorpus.getDocs(), txtCorpusPath.getText());

        this.engine.setSimilarityCalculator(similarityCalc);
        similarityCalc.setGuiToUpdate(this);
        similarityCalc.execute();
    }

    public void similarityCalculated() {
        SimilarityCalculator similarityCalc = this.engine.getSimilarityCalculator();

        ArrayList<ResultEntry> results = null;
        try {
            results = similarityCalc.get();
        } catch (InterruptedException | ExecutionException ex) {
        }

        if (results != null) {
            //Tri décroissant
            Collections.sort(results, Collections.reverseOrder());

            //Affichage des X meilleurs résultats
            int nbResult = Integer.parseInt(txtResultCount.getText());

            for (int i = 0; i < nbResult; i++) {
                if (results.get(i).getScore() > 0.) {
                    //System.out.println(results.get(i));
                    modeleTableResults.addRow(results.get(i));
                }
            }
        }
    }

    public void updateProgressBarReadFiles(final Integer value) {
        progBar.setValue(value);
        lblProgress.setText(value + "%");
    }

    public void updateProgressBarReadWeights(final Integer value) {
        progBarWeights.setValue(value);
        lblProgressWeights.setText(value + "%");
    }

    public void updateProgressBarSimilarity(final Integer value) {
        progBarSimilarity.setValue(value);
        lblProgressSimilarity.setText(value + "%");
    }

    public void updateNbMots(Integer total, Integer uniques) {
        if (total == -1) {
            lblMotsTotal.setText("?");
        } else {
            lblMotsTotal.setText(total.toString());
        }

        if (uniques == -1) {
            lblMotsUniques.setText("?");
        }
        lblMotsUniques.setText(uniques.toString());
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroupModele = new javax.swing.ButtonGroup();
        jLabel1 = new javax.swing.JLabel();
        txtCorpusPath = new javax.swing.JTextField();
        buttonSearch = new javax.swing.JButton();
        progBar = new javax.swing.JProgressBar();
        lblProgress = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        lblMotsUniques = new javax.swing.JLabel();
        lblMotsTotal = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        txtRequest = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableResults = new javax.swing.JTable();
        progBarWeights = new javax.swing.JProgressBar();
        lblProgressSimilarity = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        progBarSimilarity = new javax.swing.JProgressBar();
        lblProgressWeights = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        txtResultCount = new javax.swing.JTextField();
        rbVectoriel = new javax.swing.JRadioButton();
        rbBoolSimple = new javax.swing.JRadioButton();
        rbBoolEtendu = new javax.swing.JRadioButton();
        jLabel9 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Chemin Corpus :");

        txtCorpusPath.setText("D:\\corpus\\corpus\\lemmes_seulement\\0000");

        buttonSearch.setText("Rechercher");
        buttonSearch.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonSearchActionPerformed(evt);
            }
        });

        lblProgress.setText("0%");

        jLabel2.setText("Total Mots :");

        jLabel3.setText("Mots Uniques :");

        lblMotsUniques.setText("?");

        lblMotsTotal.setText("?");

        jLabel4.setText("Requete :");

        txtRequest.setText("match football");

        jLabel6.setText("Nombre résultats à afficher :");

        jScrollPane1.setDoubleBuffered(true);

        jTableResults.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTableResults);

        lblProgressSimilarity.setText("0%");

        jLabel5.setText("Parsing");

        jLabel7.setText("Calcul Similarité");
        jLabel7.setToolTipText("");

        lblProgressWeights.setText("0%");

        jLabel8.setText("Calcul Poids");

        txtResultCount.setText("30");

        rbVectoriel.setSelected(true);
        rbVectoriel.setText("Vectoriel");

        rbBoolSimple.setText("Booléen Simple");

        rbBoolEtendu.setText("Booléen Etendu");

        jLabel9.setText("Modèle de similarité :");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(jLabel1)
                                            .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(24, 24, 24))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addGap(22, 22, 22)))
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(progBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(lblProgress, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addComponent(buttonSearch, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(txtRequest)
                                    .addComponent(txtCorpusPath)))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(jLabel3)
                                            .addComponent(jLabel2))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(layout.createSequentialGroup()
                                                .addComponent(lblMotsTotal)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                            .addGroup(layout.createSequentialGroup()
                                                .addComponent(lblMotsUniques)
                                                .addGap(0, 0, Short.MAX_VALUE))))
                                    .addGroup(layout.createSequentialGroup()
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(22, 22, 22)
                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                            .addComponent(progBarWeights, javax.swing.GroupLayout.PREFERRED_SIZE, 456, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addComponent(progBarSimilarity, javax.swing.GroupLayout.PREFERRED_SIZE, 456, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(0, 0, Short.MAX_VALUE)))
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(lblProgressWeights, javax.swing.GroupLayout.DEFAULT_SIZE, 40, Short.MAX_VALUE)
                                    .addComponent(lblProgressSimilarity, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                        .addGap(16, 16, 16))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 638, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jLabel6)
                                .addGap(3, 3, 3)
                                .addComponent(txtResultCount, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(0, 0, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addGap(0, 0, Short.MAX_VALUE)
                                .addComponent(jLabel9)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(rbVectoriel)
                            .addComponent(rbBoolEtendu)
                            .addComponent(rbBoolSimple))
                        .addGap(47, 47, 47))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(txtCorpusPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtRequest, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE)
                    .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(buttonSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(lblProgress, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(progBar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblProgressWeights, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(progBarWeights, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(progBarSimilarity, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(lblProgressSimilarity, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(lblMotsTotal))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(lblMotsUniques))
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(48, 48, 48)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtResultCount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 231, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rbVectoriel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(rbBoolSimple)
                            .addComponent(jLabel9))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(rbBoolEtendu)))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void buttonSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonSearchActionPerformed
        //Popup d'erreur si le chemin est incorrect
        File corpusPath = new File(txtCorpusPath.getText());
        if(!corpusPath.exists()){
            JOptionPane.showMessageDialog(new JFrame(), 
                    "Le chemin du corpus spécifié n'existe pas. ("+txtCorpusPath.getText()+")", "Erreur", JOptionPane.ERROR_MESSAGE);
            return;
        }
        
        buttonSearch();
    }//GEN-LAST:event_buttonSearchActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new UserInterface().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroupModele;
    private javax.swing.JButton buttonSearch;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTableResults;
    private javax.swing.JLabel lblMotsTotal;
    private javax.swing.JLabel lblMotsUniques;
    private javax.swing.JLabel lblProgress;
    private javax.swing.JLabel lblProgressSimilarity;
    private javax.swing.JLabel lblProgressWeights;
    private javax.swing.JProgressBar progBar;
    private javax.swing.JProgressBar progBarSimilarity;
    private javax.swing.JProgressBar progBarWeights;
    private javax.swing.JRadioButton rbBoolEtendu;
    private javax.swing.JRadioButton rbBoolSimple;
    private javax.swing.JRadioButton rbVectoriel;
    private javax.swing.JTextField txtCorpusPath;
    private javax.swing.JTextField txtRequest;
    private javax.swing.JTextField txtResultCount;
    // End of variables declaration//GEN-END:variables
}
